package cn.tedu.collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.ListIterator;

/*本类用于测试ArrayListD的相关内容*/
public class TestArrayList {
    public static void main(String[] args) {
        //1.创建对象
        //底层会自动帮我们创建数组存放对象
        ArrayList<Integer> list = new ArrayList<Integer>();
        //2.向集合中添加元素
        list.add(100);
        list.add(200);
        list.add(300);
        list.add(400);
        list.add(500);
        System.out.println(list);
        //3.开始测试 -- 单个集合
        //System.out.println(list.clone());
        System.out.println(list.contains(100));
        System.out.println(list.get(0));
        System.out.println(list.indexOf(500));
        list.set(2,200);
        System.out.println(list);
        System.out.println(list.lastIndexOf(200));
        System.out.println(list.isEmpty());
        list.remove(1);
        //list.remove(300);
        /*这样写会报错：数组下标越界，index=300，size=4
        * 这个方法是根据下标值来删除元素的，而本集合没有300的下标，所以数组下标越界
        * 如果想根据具体的元素内容移出元素，需要先把int类型的数据转出Integer数据类型**/
        System.out.println(list.remove(Integer.valueOf(300)));
        System.out.println(list);
        System.out.println(list.size());
        System.out.println(Arrays.toString(list.toArray()));
        //迭代方式
        System.out.println("迭代方式一");
        for(int i = 0;i< list.size();i++){
            System.out.println(list.get(i));
        }
        System.out.println("迭代方式二");
        for(Integer i:list){
            System.out.println(i);
        }
        System.out.println("迭代方式三");
        Iterator<Integer> it = list.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
        System.out.println("迭代方式四");
        ListIterator<Integer> it2 = list.listIterator();
        while (it2.hasNext()){
            System.out.println(it2.next());
        }
    }
}
